home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1988 January / 64er_Magazin_88-01_1988_Markt__Technik_de_Side_B.d64 / hyper iii .src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  80 lines

  1. 100 sys 9*4096:.opt oo: *= $c000
  2. 105 ze = 149
  3. 110 hrz = ze+2
  4. 115 ;*******************
  5. 120 ;* hyperscreen iii *
  6. 125 ;*   by hermann    *
  7. 130 ;*    schinagl     *
  8. 135 ;*   17.10.1987    *
  9. 140 ;*******************
  10. 145 ; vorbereiten des vic und der irq
  11. 150 lda #$c8:sta $d016:lda #0:sta $d020:sta $d021:jsr $e544
  12. 155 lda #8:sta $a7
  13. 160 jsr setspr:jsr irqon:wait jmp wait
  14. 165 ;-------------------------
  15. 170 ; systeminterrrupt loeschen
  16. 175 irqon sei:lda #0:sta $dc0e
  17. 180 ; irq einstellen
  18. 185 lda #<irq:ldx #>irq:sta $314:stx $315
  19. 190 ; rasterzeileirq vorbereiten
  20. 195 lda #ze:sta $d012:lda #1:sta $d01a
  21. 200 lda $d011:and #$7f:sta $d011
  22. 205 cli:rts
  23. 210 ; alle sprite positionen einstellen
  24. 215 ;-------------------------
  25. 220 setspr ldx #0:m1 lda tab1,x:sta $d000,x:inx
  26. 225 cpx #17:bne m1:lda #255:sta $d015
  27. 230 sta $d01d
  28. 235 ; spritefarben vorbereiten
  29. 240 lda #7:tay:c1 sta $d027,y:dey:bpl c1
  30. 245 ldx #$ff:ldy #7:m2 txa:sta $7f8,y:dex:dey:bpl m2
  31. 250 ; und auch die images einstellen
  32. 255 ldy #0:tya:loop sta $3d00,y:sta $3e00,y:sta $3f00,y
  33. 260 iny:bne loop:jmp reset
  34. 265 ; irq, um rahmen abzuschalten
  35. 270 ; abwarten bis strahl in richtiger position
  36. 275 ;-------------------------
  37. 280 irq ldx #7:i1 dex:bne i1:nop:nop
  38. 285 ldx #22:m5 bit $ea:dec $d016; 40 spalten
  39. 290 inc $d016; 38 spalten
  40. 295 ldy $d012; rasterzeile laden
  41. 300 ;und bildschirm gezielt verschieben
  42. 305 dey:nop:tya:and #7:ora #$18
  43. 310 sta $d011:nop:nop:nop:nop
  44. 315 dex:bpl m5; ende der schleife
  45. 320 lda #27:sta $d011:lda #1:sta $d019
  46. 325 ; alte konfiguration wieder herstellen
  47. 330 jsr scroll; text um ein pixel weiter scrollen
  48. 335 ldx #$f1:k dex:bne k:jmp $febc
  49. 340 ;sprite zeilenweise durchscrollen
  50. 345 scroll ldx #0:do1 clc:rol $3d00,x
  51. 350 rol $3fc8,x:rol $3fc7,x:rol $3fc6,x
  52. 355 rol $3f88,x:rol $3f87,x:rol $3f86,x
  53. 360 rol $3f48,x:rol $3f47,x:rol $3f46,x
  54. 365 rol $3f08,x:rol $3f07,x:rol $3f06,x
  55. 370 rol $3ec8,x:rol $3ec7,x:rol $3ec6,x
  56. 375 rol $3e88,x:rol $3e87,x:rol $3e86,x
  57. 380 rol $3e48,x:rol $3e47,x:rol $3e46,x
  58. 385 rol $3e08,x:rol $3e07,x:rol $3e06,x
  59. 390 inx:inx:inx:cpx #$18:bne do1
  60. 395 dec $a7:bne do5
  61. 400 do2 ldy #0:sty $fb:lda ($9e),y; byte aus text holen
  62. 405 asl a:rol $fb:asl a:rol $fb; mit acht multiplizieren
  63. 410 asl a:rol $fb:sta $fa
  64. 415 lda $fb:adc #$d8:sta $fb; offset fuer zeichensatz addieren
  65. 420 ldx #0:ldy #0:lda #$33:sta 1; auf cahr rom umschalten
  66. 425 do3 lda ($fa),y:sta $3d00,x; char image holen und speichern
  67. 430 inx:inx:inx:iny:cpy #8:bne do3; schon der ganze buchstabe
  68. 435 sty $a7:lda #$37:sta 1; und retourschalten
  69. 440 inc $9e:bne do4:inc $9f:do4 ldy #0:lda ($9e),y; text um eins erhoehen
  70. 445 bne do5
  71. 450 reset lda #<sctext:ldx #>sctext:sta $9e:stx $9f:do5 rts
  72. 455 ;sprite positionen
  73. 460 ;---------------------------
  74. 465 tab1 .byt 241,hrz,41,hrz,41+48,hrz
  75. 470 .byt 41+(2*48),hrz,41+(3*48),hrz
  76. 475 .byt 41+(4*48),hrz
  77. 480 .byt 25,hrz,25+48,hrz,193
  78. 485 sctext .asc "hyperscreen iii written by hermann schinagl "
  79. 490 .byt 0; abschlusz
  80.